package br.com.imob.dao;

import br.com.imob.modelo.Negocio;

import java.util.List;

/** @user Gilton Nascimento
 *  @since 12:24:39 31/01/2011 2011
 *  @version 
 */

public class NegocioDao extends GenericDao {
	
	public NegocioDao() {  }
	
	public Integer adicionarNegocio(Negocio negocio) {
		saveOrUpdatePojo(negocio);
		return negocio.getNegocioId();
	}
	
	public void removerNegocio(Negocio negocio) {
		removerPojo(negocio);
	}

	/* Precisa definir o ID */
	public void atualizarNegocio(Negocio recupera) {
		saveOrUpdatePojo(recupera);
	}
	
	/**
	 * Edita um Negocio
	 * @param String oldNegocio
	 * @param String newNegocio
	 */
	public void atualizarNegocio(String oldNegocio, String newNegocio ) {
		if ( ( !"".equals(oldNegocio) && oldNegocio != null )
			&& ( !"".equals(newNegocio) && newNegocio != null ) ) 
			atualizarNegocio( getNegocioQNamed(oldNegocio), new Negocio(newNegocio) );
	}
	
	/* Precisa definir qual atribuito sera a chave a identificar 
	 * a tupla a ser alterada */
	public void atualizarNegocio(Negocio recuperar, Negocio alterar) {
		recuperar = retriveNegocio(recuperar);
		
		if(alterar.getNegocio() != null)
			recuperar.setNegocio(alterar.getNegocio());
		
		saveOrUpdatePojo(recuperar);
	}
	
//	Artificio para Recuperar a Tupla de Negocio
	protected Negocio retriveNegocio(Negocio recuperar) {
		if(recuperar.getNegocioId() == null)
			return getNegocioQNamed(recuperar.getNegocio());
		else 
			return getNegocio(recuperar.getNegocioId());
	}
	
	
//	Consultas
	public Negocio getNegocio(Integer key) {
		return getPojoByID(Negocio.class, key);
	}
	public Negocio getNegocioByQuery(String query, Object...params) {
		return getPojoByQry(query, params);
	}
	public Negocio getNegocioQNamed(String fltrNegocio) {
		return getPojoByQNamed("Negocio.findByNegocio", fltrNegocio);
	}
	
	public List<Negocio> getNegocios() {
		return (List<Negocio>) getALL(Negocio.class);
	}
	public List<Negocio> getNegociosQNamedPRX(String fltrNegocio) {
		return getListByQNamedPRX("Negocio.findLikeByNegocio", fltrNegocio);
	}
	public List<Negocio> getNegociosByQuery(String query, Object...params) {
		return getListByQry(query, params);
	}
	
}